/**
 * easy-ui
 * bug:使用easyui-lang-zh_CN.js国际化之后，只替换了原始组件里的message，没有替换掉继承原始组件里的message。（详见$.fn.numberspinner.defaults定义处）
 */
$.extend($.fn.numberspinner.defaults, $.fn.spinner.defaults, $.fn.numberbox.defaults, {
	spin : $.fn.numberspinner.defaults.spin
});

$.extend($.fn.datagrid.defaults.editors, {
	numberspinner : {
		init : function(_602, _603) {
			var _604 = $("<input type=\"text\">").appendTo(_602);
			_604.numberspinner(_603);
			return _604;
		},
		destroy : function(_605) {
			$(_605).numberspinner("destroy");
		},
		getValue : function(_606) {
			$(_606).blur();
			return $(_606).numberspinner("getValue");
		},
		setValue : function(_607, _608) {
			$(_607).numberspinner("setValue", _608);
		},
		resize : function(_609, _60a) {
			$(_609).numberspinner("resize", _60a);
		}
	}
});

var EasyUI = {
	/**
	 * <li>id : tabs's id;</li>
	 * <li>title : tabs's title;</li>
	 * <li>href : tabs's href;</li>
	 * <li>content ： tabs's content;</li>
	 * <li>icon : tabs's icon;</li>
	 * <li>closable : tabs's closable state, default true; </li>
	 * <li>(tips : href/content同时存在时href优先)</li>
	 */
	OpenTab : function(obj) {
		var tabsObj = $('#' + obj.id);
		if (!tabsObj) {
			return;
		}

		if (tabsObj.tabs('exists', obj.title)) {
			tabsObj.tabs('select', obj.title);
		} else {
			var closableState = true;
			if (typeof (obj.closable) != "undefined") {
				closableState = obj.closable;
			}
			var option = {
				title : obj.title,
				icon : obj.icon ? obj.icon : '',
				closable : closableState,
				cache : false
			};
			if (obj.href) {
				// option.href = ctx + obj.href;
				option.content = '<iframe style="width:100%;height:100%;" scrolling="auto" frameborder="0" src="' + obj.href
						+ '"></iframe>';
			} else {
				option.content = obj.content;
			}

			tabsObj.tabs('add', option);
		}
	},
	/**
	 * 生成easyui-tree的数据源data
	 * 
	 * @param {data:data,
	 *            state:nodeState}
	 * @param idPrefix
	 *            生成ID前缀
	 * @returns {Array}
	 */
	GenerateTreeData : function(obj, idPrefix) {
		idPrefix = idPrefix ? idPrefix : 'treeNode_';

		var treeData = [];
		$.each(obj.data, function(i, o) {
			var menuData = {
				id : idPrefix + o.menuId,
				text : o.menuName,
				iconCls : o.icon,
				state : o.menuType == 'FOLDER' ? 'closed' : 'open',
				attributes : {
					url : o.url,
					menuId : o.menuId,
					menuType : o.menuType
				},
				crtName : o.creator.userName,
				crtTime : (new Date(o.crtTime)).format('yyyy-MM-dd HH:mm:ss')
			};
			if (o.submenuList && o.submenuList.length != 0) {
				menuData.children = EasyUI.GenerateTreeData({
					data : o.submenuList
				}, idPrefix);
			}
			treeData.push(menuData);
		});
		return treeData;
	},
	/**
	 * 选中treeData的node，数据格式与GenerateTreeData生成格式相同
	 */
	CheckTree : function(treeObj, treeData) {
		$.each(treeData, function(i, node) {
			if (node.children) {
				EasyUI.CheckTree(treeObj, node.children);
			} else {
				$(treeObj).tree('check', $(treeObj).tree('find', node.id).target);
			}
		});
	},
	/**
	 * 取消选中treeData的node，数据格式与GenerateTreeData生成格式相同
	 */
	UncheckTree : function(treeObj, treeData) {
		$.each(treeData, function(i, node) {
			if (node.children) {
				EasyUI.UncheckTree(treeObj, node.children);
			} else {
				$(treeObj).tree('uncheck', $(treeObj).tree('find', node.id).target);
			}
		});
	},
	/**
	 * 全部取消选中
	 */
	UncheckAllTree : function(treeObj){
		var nodes = $(treeObj).tree('getChecked')
		$.each(nodes, function(i, node) {
			$(treeObj).tree('uncheck', $(treeObj).tree('find', node.id).target);
		});
	},
	ShowMessage : function(obj) {
		$.messager.show({
			title : '提示',
			msg : obj.msg,
			showType : 'slide',
			timeout : 5000,
			style : {
				// left : '',
				right : '',
				top : document.body.scrollTop + document.documentElement.scrollTop,
				bottom : ''
			}
		});
	}
};
Date.prototype.format = function(format) {
	var o = {
		"M+" : this.getMonth() + 1,
		"d+" : this.getDate(),
		"H+" : this.getHours(),
		"m+" : this.getMinutes(),
		"s+" : this.getSeconds(),
		"q+" : Math.floor((this.getMonth() + 3) / 3),
		"S" : this.getMilliseconds()
	}
	if (/(y+)/.test(format)) {
		format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	}

	for ( var k in o) {
		if (new RegExp("(" + k + ")").test(format)) {
			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
		}
	}

	return format;
}